﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

namespace Engine
{
    public class Animation
    {
        int frame = 0;
        public Texture2D text;
        int speed = 0;//time de animacion
        int timer = 0;
        int frameTotal = 0;//recibe cantidad de frames total para loopear
        int frameCantX;
        int frameCantY;
        
      public Animation(Texture2D _text, int framesX, int framesY, int _framesTotal, int _speed)
        {
            text = _text;
            frameCantX = framesX;
            frameCantY = framesY;
            frameTotal = _framesTotal;
            speed = _speed;           
        }

       public void update(int dTime)
        {
            timer += dTime; //esto es para saber cuanto tiempo paso entre frames

            if (timer >= speed)
            {
                timer = 0;

                frame++; //cambia de frame

                if (frame >= frameTotal)
                {
                    frame = 0;
                }
            }
        }

        public Rectangle getRect()
        {
            int w = text.Width / frameCantX; //Rect es una seccion pequeña
            int h = text.Height / frameCantY;

            int x = (frame%frameCantX)*w; //primero hago el modulo, da un numero entre 0 y N (ancho total) y mutliplico * W (me dice que cuadro para la derecha estoy)
            int y = (frame/frameCantX)*h;
            
            return new Rectangle(x, y, w, h);//retorno mi rectangulo
        }
    }
}
